import 'package:flutter/material.dart';
import 'package:get/get.dart';

import '../../../controllers/auth_controller.dart';
import '../../../routes/app_routes.dart';

/// 登录控制器
class LoginController extends GetxController {
  // 注入认证控制器
  final AuthController _authController = Get.find<AuthController>();
  
  // 表单key
  final GlobalKey<FormState> formKey = GlobalKey<FormState>();
  
  // 邮箱和密码控制器
  final TextEditingController emailController = TextEditingController();
  final TextEditingController passwordController = TextEditingController();
  
  // 加载状态
  final RxBool isLoading = false.obs;
  
  // 密码可见性
  final RxBool isPasswordVisible = false.obs;
  
  @override
  void onClose() {
    emailController.dispose();
    passwordController.dispose();
    super.onClose();
  }
  
  /// 执行登录操作
  Future<void> login() async {
    if (formKey.currentState!.validate()) {
      isLoading.value = true;
      
      try {
        // 调用认证控制器的登录方法
        await _authController.login(
          emailController.text,
          passwordController.text,
        );
        
        // 登录成功后，导航到主页
        // AuthController内部已经处理了导航逻辑
        
      } catch (e) {
        // 显示错误提示
        Get.snackbar(
          '登录失败',
          e.toString(),
          snackPosition: SnackPosition.BOTTOM,
          backgroundColor: Colors.red,
          colorText: Colors.white,
        );
      } finally {
        isLoading.value = false;
      }
    }
  }
  
  /// 切换密码可见性
  void togglePasswordVisibility() {
    isPasswordVisible.value = !isPasswordVisible.value;
  }
  
  /// 导航到注册页面
  void navigateToRegister() {
    Get.toNamed(AppRoutes.REGISTER);
  }
  
  /// 导航到忘记密码页面
  void navigateToForgotPassword() {
    // Get.toNamed(AppRoutes.FORGOT_PASSWORD);
    Get.snackbar('提示', '忘记密码功能正在开发中');
  }
  
  /// 邮箱验证规则
  String? validateEmail(String? value) {
    if (value == null || value.isEmpty) {
      return '请输入邮箱';
    }
    if (!GetUtils.isEmail(value)) {
      return '请输入有效的邮箱地址';
    }
    return null;
  }
  
  /// 密码验证规则
  String? validatePassword(String? value) {
    if (value == null || value.isEmpty) {
      return '请输入密码';
    }
    if (value.length < 6) {
      return '密码长度不能少于6位';
    }
    return null;
  }
} 